const gulp = require("gulp");
const htmlmin = require("gulp-htmlmin");
const cssmin = require("gulp-cssmin");
const uglify = require("gulp-uglify");
const browserSync = require("browser-sync").create();

// HTML 任务
function html() {
  return gulp
    .src("./index.html")
    .pipe(
      htmlmin({
        // 去掉所有的空格空白内容
        collapseWhitespace: true,
        // 去掉所有布尔类型属性
        collapseBooleanAttributes: true,
        // 移出属性值位置的双引号
        removeAttributeQuotes: true,
        // 移出空属性
        removeEmptyAttributes: true,
        // 移出注释内容
        removeComments: true,
        // 移出 script 标签上的默认 type 属性
        removeScriptTypeAttributes: true,
        // 移出 style 标签和 link 标签的 默认 type 属性
        removeStyleLinkTypeAttributes: true,
        // 压缩内嵌式 css 样式
        minifyCSS: true,
        // 压缩内嵌式 js 代码
        // 注意: 不能包含 ES6 语法
        minifyJS: true,
      })
    )
    .pipe(gulp.dest("dist/"))
    .pipe(browserSync.stream());
}

// // CSS 任务
function css() {
  return gulp
    .src("css/index.css")
    .pipe(cssmin())
    .pipe(gulp.dest("dist/css"))
    .pipe(browserSync.stream());
}

// // JavaScript 任务
function js() {
  return gulp
    .src("js/index.js")
    .pipe(uglify())
    .pipe(gulp.dest("dist/js"))
    .pipe(browserSync.stream());
}
// 

// 监视并刷新任务
gulp.task("watch", () => {
  browserSync.init({
    server: {
      baseDir: "./",
    },
  });

  gulp.watch("index.html", gulp.series("html"));
  gulp.watch("css/index.css", gulp.series("css"));
  gulp.watch("js/index.js", gulp.series("js"));
});

// 默认任务
gulp.task("default", gulp.series(html, css, js));
